package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后推出了一个新的特征：lambda表达式
 * lambda表达式可以让java编写面向函数式编程
 * 给我们最直观的感受是可以更精简的语法定义匿名内部类
 * 语法
 * （参数列表）->}
 *     方法体
 * }
 * 注意：
 * 使用lamdba表达式创建匿名内部类时实现接口只能有一个抽象方法！
 *
 */

public class LambdaDemo {
    public static void main(String[] args) {

        //匿名内部类风格
        FileFilter file = new FileFilter() {
            @Override
            public boolean accept(File f) {
                return f.getName().startsWith(".");
            }
        };

        //lambda 表达式写法(省略了方法名和接口名)
        FileFilter file1 =(File f )->{
            return f.getName().startsWith(".");
        };

        //方法参数列表中的参数类型可以不写，如果只有一个参数，那么（）可以忽略不写

        /*
        如果方法体只有一句代码，那么方法体"{}"可以不写，若这句话有return关键字
        那么return也要一同忽略
         */
        FileFilter filer2 =f-> f.getName().startsWith(".");

        //获取当前目录下名字以"."开始的子项
        File dir = new File(".");
        File[] subs = dir.listFiles(f->f.getName().startsWith("."));

    }
}
